package gestores;
import java.util.HashMap;

import org.jfree.data.*;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.chart.*;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYSplineRenderer;

import utilidades.OpenTextFile;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class SistemaEstadisticas {
	/*
	 * Devuelve un JPanel con la estadistica
	 */
	public ChartPanel generarGrafico(int tipo)
	{
		//tipo=0 (Horas) / tipo=1 (Dias)
		
		//Obtengo los valores del fichero
		String [] aStrings=OpenTextFile.open("estadisticas.txt");
		
		//creo contenedor
		HashMap<String, String> hValores= new HashMap<String, String>();
		
		if(tipo==0)
		{
			int ultimaHora=0;
			for(int i=0;i<aStrings.length-1;i=i+2)
			{
				String temp= aStrings[i];
//				System.out.println(temp);
				String horaS=temp.substring(13, 15);
				System.out.println("----->"+horaS);
				int hora=Integer.parseInt(horaS);
				if(ultimaHora==0)
				{
					hValores.put(horaS, temp.substring(24,temp.length()));
//					System.out.println(temp.substring(24,28));
					
				}
				else
				{
					if(hora==ultimaHora)
					{
						hValores.remove(horaS);
						hValores.put(horaS, temp.substring(24,29));
					}
					else
					{
						hValores.put(horaS, temp.substring(24,29));
					}
				}
				
			}
		}
		else
		{
			int ultimoDia=0;
			for(int i=0;i<aStrings.length;i=i+2)
			{
				String temp= aStrings[i];
				String diaS=temp.substring(10, 12);
//				System.out.println(diaS);
				int dia=Integer.parseInt(diaS);
				if(ultimoDia==0)
				{
					hValores.put(diaS, temp.substring(24,29));
					
				}
				else
				{
					if(dia==ultimoDia)
					{
						hValores.remove(diaS);
						hValores.put(diaS, temp.substring(24,29));
					}
					else
					{
						hValores.put(diaS, temp.substring(24,29));
					}
				}
				
			}
		}
		
		//panel a devolver
		ChartPanel panel;
		JFreeChart chart =null;
		//variable que marcará si se ha realizado correctamente
		int comprobar=1;
		XYSplineRenderer renderer= new XYSplineRenderer();
		XYSeriesCollection setDatos= new XYSeriesCollection();
		
		//Utilizamos estas variables para los nombres de los ejes
		ValueAxis x= new NumberAxis();
		ValueAxis y= new NumberAxis();
		
		XYSeries serie = new XYSeries("Datos");
		
		XYPlot plot;
		
		if(tipo==0)
		{
			for(int i=0;i<24;i++)
			{
				String temp=hValores.get(""+i);
				if(temp!=null)
				{
					serie.add(i, Float.parseFloat(temp));
				}
			}
				
		}
		else
		{
			for(int i=0;i<31;i++)
			{
				String temp=hValores.get(""+i);
				if(temp!=null)
				{
					serie.add(i, Float.parseFloat(temp));
				}
			}
					
		}
		
		if(comprobar==1)
		{
			setDatos.addSeries(serie);
			String tipoS;
			if(tipo==0)
			{
				tipoS="Horas";
			}
			else
			{
				tipoS="Dias";
			}
			x.setLabel(tipoS);
			y.setLabel("Valor");
			plot= new XYPlot(setDatos, x, y, renderer);
			chart=new JFreeChart(plot);
			if(tipo==0)
			{
				chart.setTitle("Movimiento del valor por horas");
			}
			else
			{
				chart.setTitle("Movimiento del valor por días");
			}
		}
		return new ChartPanel(chart);
		
	}
	
	
	public static void main(String []args)
	{
		System.out.println("paso1");
		SistemaEmpresas s = null;
		try {
			s = new SistemaEmpresas();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("paso2");
		s.datosEstadisticas("3/05/14 00:00:00", "5/05/14 23:59:59", clasesBasicas.Global.cod_Emp_Sel);
		SistemaEstadisticas sE= new SistemaEstadisticas();
		ChartPanel jF=sE.generarGrafico(0);
		JFrame ventana= new JFrame();
		ventana.setSize(500,500);
		ventana.setVisible(true);
		JPanel jP= new JPanel();
		jP.add(jF);
		ventana.add(jP);
		jP.updateUI();
	}
	
		
	
}
